package main

import (
	"bytes"
	"fmt"
	"unicode/utf8"
)

//append copy
func main() {
	fmt.Println("examp18")
	a1 := []int{1, 2, 3, 9}
	a2 := append(a1, 4)
	fmt.Println("原数组", a1)
	fmt.Println("新数组", a2)
	a3 := []int{4, 5, 6, 7, 8}
	copy(a1, a3) //将第二个参数复制到第一个数组里,长度取决于第一个数组长度
	fmt.Println(a1)
	//string byte
	s1 := "abcdefg"
	b1 := []byte(s1) //将字符串转换为byte数组
	b1[3] = 'u'      //将字符串下标为3的值改变
	fmt.Println(b1, string(b1))
	for i, v := range s1 { //使用for range循环字符串
		fmt.Println(i, string(v))
	}
	//字符串连接
	var buf bytes.Buffer
	buf.WriteString("杨")
	buf.WriteByte('1')
	buf.WriteString("红")
	buf.WriteString("岩")
	fmt.Println("字符串连接", buf.String())
	//打印字符串长度,go语言使用的是utf-8编码,在获得字符串长度时有两种方式
	fmt.Println(len(buf.String()), utf8.RuneCountInString(buf.String()))
}
